package ink.liaoxuefeng.javacore;

/**
 * @author wangzhuangzhuang
 * @DESC:
 * 基本类型： byte、short、int、long、boolean、float、double、char
 * 引用类型：所有class和interface类型
 * 引用类型可以赋值为null表示空但是基本数据类型必须给予默认值
 * @date 2022-01-25 10:59
 */
public class BoxingDemo {
	public static void main(String[] args) {
		int i = 100;
		// 通过new操作符创建Integer实例
		Integer num01 = new Integer(i); // unnecessary boxing
		// 通过静态方法valueOf(int)创建Integer实例
		Integer num02 = Integer.valueOf(i);
		// 通过静态方法valueOf(String)创建Integer实例
		Integer num03 = Integer.valueOf("100");
		// num01: 100 num02: 100 num03: 100
		System.out.println(String.format("num01: %s num02: %s num03: %s", num01, num02, num03));


		int j = 100;
		Integer integer = Integer.valueOf(j);

		// 从学习角度 Integer是要求通过[==]来进行比较才能保证两个Integer对象相等
		// 但是从业务角度要通过equals来比较Integer对象
		Integer x = 127;
		Integer y = 127;
		Integer m = 99999;
		Integer n = 99999;
		System.out.println("x == y: " + (x == y)); // x == y: true
		System.out.println("m == n: " + (m == n)); // m == n: false
		System.out.println("x.equals(y): " + x.equals(y)); // x.equals(y): true
		System.out.println("m.equals(n): " + m.equals(n)); // m.equals(n): true
	}
}